Video decoders are known per se. Typically, video decoders are processing systems—either dedicated decoding hardware systems or general purpose processing systems executing decoder software—that reconstruct a video data stream from a coded representation of video. FIG. 1 illustrates a exemplary decoder 100 as may be known in the art. The decoder 100 decodes the coded data 102 to generate decoded data 104. The decoder 100 may perform decoding operations upon received bit streams, such as image prediction, entropy decoding, inverse quantization and inverse cosine transforms, to generate the decoded video data 104. The decoder 100 is often includes dedicated functional units 106 that perform these decoding operations.
In conventional hardware decoders, all the functional units 106 are always on (e.g., continuously powered) when decoding data. In conventional software-based decoders, all the functional units 106 are always instantiated by the software system. Such conventional “always on” behavior, however, can be wasteful because all functional units 106 are not always needed to decode all portions of the coded video data 102. When the decoder 100 is implemented in hardware the path from coded video data 102 to the decoded video data 104 may include functional units 106 that are not needed. When the decoder 100 is implemented with software not all functional units 106 need to be loaded and linked to decode all portions of the coded video data 102. Thus there is a need for a decoder 100 architecture that saves power by not always keeping all the functional units 106 on when they are not needed to decode all portions of the coded video data 102, and there is a need for a software embodiment that does not always keep all the functional units 106 loaded when they are not needed to decode all portions of the coded video data 102.